/*================================================================
*   Copyright (C) 2024 baichao All rights reserved.
*   
*   文件名称：set_pthread_attr_t.c
*   创 建 者：baichao
*   创建日期：2024年02月27日
*   描    述：
*
================================================================*/


#include <pthread.h>  
#include <stdio.h>  
#include <stdlib.h>  
  
void *thread_function(void *arg) {  
    // 线程的工作代码  
    return NULL;  
}  
  
int main() {  
    pthread_t thread_id;  
    pthread_attr_t thread_attr;  
    size_t stack_size = 1024 * 1024; // 1MB  
  
    // 初始化线程属性  
    if (pthread_attr_init(&thread_attr) != 0) {  
        fprintf(stderr, "Error initializing thread attributes\n");  
        return 1;  
    }  
  
    // 设置线程堆栈大小  
    if (pthread_attr_setstacksize(&thread_attr, stack_size) != 0) {  
        fprintf(stderr, "Error setting thread stack size\n");  
        pthread_attr_destroy(&thread_attr); // 清理属性对象  
        return 1;  
    }  
  
    // 创建线程，传递设置好的属性  
    if (pthread_create(&thread_id, &thread_attr, thread_function, NULL) != 0) {  
        fprintf(stderr, "Error creating thread\n");  
        pthread_attr_destroy(&thread_attr); // 清理属性对象  
        return 1;  
    }  
  
    // 等待线程结束  
    if (pthread_join(thread_id, NULL) != 0) {  
        fprintf(stderr, "Error joining thread\n");  
        return 2;  
    }  
  
    // 销毁线程属性对象  
    pthread_attr_destroy(&thread_attr);  
  
    printf("Thread has exited\n");  
    return 0;  
}
